package com.qingcheng.service.order;
import com.qingcheng.entity.PageResult;
import com.qingcheng.pojo.order.Order;
import com.qingcheng.pojo.order.OrderCombination;
import com.qingcheng.pojo.order.OrderItem;

import java.util.*;

/**
 * order业务逻辑层
 */
public interface OrderService {


    public List<Order> findAll();


    public PageResult<Order> findPage(int page, int size);


    public List<Order> findList(Map<String,Object> searchMap);


    public PageResult<Order> findPage(Map<String,Object> searchMap,int page, int size);


    public Order findById(String id);

    public Map<String,Object> add(Order order);


    public void update(Order order);


    public void delete(String id);

    ///////////////////////////////////////////////////////

    /**
     * 根据ID查询订单
     * @param id
     * @return
     */
    public OrderCombination findOrderCombinationById(String id);

    /**
     * 查找所有未发货的订单
     * @param ids
     * @return
     */
    public List<Order> findNotSendOrderList(String[] ids);

    /**
     * 批量发货
     * @param orders
     */
    public void batchSend(List<Order> orders);

    /**
     * 订单超时处理逻辑
     */
    public void orderTimeOutLogic();

    /**
     * 合并订单
     * @param masterId 主订单ID
     * @param branchId 从订单ID
     */
    public void mergeOrder(String masterId,String branchId);

    /**
     * 拆分订单
     * @param orderItems
     */
    public void splitOrder(List<OrderItem> orderItems);


    /**
     * 修改订单状态
     * @param orderId
     * @param transactionId
     */
    public void updatePayStatus(String orderId,String transactionId);

    /**
     * 关闭订单
     * @param orderId
     */
    public void closeOrder(String orderId);


    /**
     * 订单补偿操作(本地查询订单为未支付，微信查询已支付，以微信为准)
     * @param orderId
     */
    public void updateOrderForCompensate(String orderId);




}
